package Datatypes;

import Interfaces.IPerfil;
import java.io.Serializable;
import java.util.List;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;

public class Arbol implements Serializable{

    private Nodo root = null;

    public Arbol() {}
    
    public Arbol(Nodo n){
    
        this.root = n;
    
    }
    
    public Nodo getRoot(){
    
        return this.root;
        
    }
    
    public void setRoot(Nodo n){
    
        this.root = n;
    
    }
    
    public TreeModel getModelo(){
    
        DefaultTreeModel modelo = new DefaultTreeModel(this.root);
    
        return modelo;
        
    }
    
    public Boolean existeNodo(Nodo n){
    
        Boolean existe = false;
        
        if(root != null){
        
            existe = root.existeNodo(n);
        
        }
    
        return existe;
            
    }
    
    public void insertarNodo(Nodo n){
    
        root.insertarNodo(n);
    
    }
    
    public void insertarNodo(Nodo n, Nodo padre){
    
        root.insertarNodo(n, padre);
    
    }
    
    public void insertarNodo(Nodo n, Object valor){
    
        root.insertarNodo(n, valor);
    
    }
    
    public void mostrarArbol(){
    
        root.mostrarNodo();
    
    }
    
    public Nodo buscarNodo(Object valor){
    
        return root.buscarNodo(valor);
    
    }
    
    public List<Nodo> listarArbol(){
    
        return root.listarNodos();
    
    }
    
    public String listarArbolHTML(IPerfil ip, Boolean cargarImagen) throws Exception{
        
        return root.listarNodosHTML(ip, cargarImagen);
    
    }
    
    public void borrarNodo(Object valor){
    
        this.root.borrarNodo(valor);
    
    }
    
    public void borrarNodo(Nodo n){
    
        this.root.borrarNodo(n);
    
    }
    
}
